The present invention relates to data synchronization of a client device that has been disconnected from its associated server. More specifically, the present invention pertains to a data structure designed to facilitate efficient transaction playback from a client to a server.
Applications running in disconnected states have a requirement to keep their data in sync with some central data store. This requirement, at its most basic level, can be met by using existing data replication technologies (such as SQL Server data replication). However, pure replication may create a security hole when moving local data to the central store. This security hole has at least two parts. First, data can be modified in the local client without regard to security business rules (i.e., a user could open the raw table data using any number of data editing tools and change information to which they may not necessarily have access). Second, business rules change frequently and may change while the user has been disconnected from the central store (and central business rule repository).
One way to overcome disadvantages associated with data replication is to construct and play back a transaction log. A transaction log is a recorded list of operations performed on a disconnected client application. During playback, when the client is re-connected to a server and its associated business rules and central data store, the recorded operations are applied utilizing the server business rules to manipulate data stored in the central store (i.e., modify data, delete data or create new data).
Playing back a complete list of transactions can be very time and bandwidth consuming. For example, update of a central data store can take a particularly long time for a person on a low bandwidth connection playing back a large number of transactions. In some instances, the transactions themselves can be relatively large in size. Another problem associated with designs that rely on complete transaction playback is that they are not particularly robust with respect to low-quality connections or where a user has canceled a playback.